"""
线程的常见方法：
    t.start(), 当前线程准备就绪（等待CPU调度，具体事件是由CPU来决定）
    t.join(), 等待当前线程的任务执行完毕后再向下继续执行。(CPU执行线程时，有分片机制）
    t.setDaemon(布尔值), 守护线程（必须放在start之前
        - t.setDaemon(True), 设置为守护线程，主线程执行完毕后，子线程自动关闭
        - t.setDaemon(False), 设置为非守护线程，主线程等待子线程，子线程执行完毕后，主线程才结束。（默认）
    t.setName(), 设置线程的名字（必须放在start前面）
    threading.current_thread().getName(), 获取当前线程的名字。
"""
import threading
import time

"""
def task(arg):
    pass


# 创建一个 Thread 对象（线程），并封装线程被CPU调度时应该执行的 任务 和 相关参数
t = threading.Thread(target=task, args=('xxx',))

# 线程准备就绪（等待CPU调度），代码继续向下执行
t.start()

print("继续执行。。。")  # 主线程执行完毕所欲代码，不结束（等待子线程）
"""


"""
# 线程守护
def task(arg):
    time.sleep(5)
    print("任务")

t = threading.Thread(target=task, args=(11,))
t.setDaemon(True)
t.start()
print("end")
"""

# 自定义线程类，直接将线程需要做的事写到 run 方法中
class MyThread(threading.Thread):
    def run(self):
        print("执行此线程", self._args)

t = MyThread(args=(100,))
t.start()
